package com.example.duihua.mapper;

import com.example.duihua.entity.Message;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface MessageMapper {
    
    /**
     * 插入消息
     * @param message 消息对象
     * @return 影响的行数
     */
    int insert(Message message);
    
    /**
     * 更新消息
     * @param message 消息对象
     * @return 影响的行数
     */
    int update(Message message);
    
    /**
     * 根据ID查找消息
     * @param id 消息ID
     * @return 消息对象
     */
    Message findById(Long id);
    
    /**
     * 查询私聊消息历史
     * @param userId 用户ID
     * @param friendId 好友ID
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 消息列表
     */
    List<Message> findPrivateMessages(@Param("userId") Long userId, 
                                     @Param("friendId") Long friendId, 
                                     @Param("offset") int offset, 
                                     @Param("limit") int limit);
    
    /**
     * 查询群聊消息历史
     * @param groupId 群组ID
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 消息列表
     */
    List<Message> findGroupMessages(@Param("groupId") Long groupId, 
                                   @Param("offset") int offset, 
                                   @Param("limit") int limit);
    
    /**
     * 批量更新消息状态
     * @param messageIds 消息ID列表
     * @param status 状态
     * @return 影响的行数
     */
    int updateStatus(@Param("messageIds") List<Long> messageIds, @Param("status") String status);
}